package com.springboot.springbootlogindemo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;


/**
 * 任务调度：
 * 当你的应用程序启动时，Spring 会扫描带有 @Scheduled 注解的方法，并在配置的线程池中执行这些定时任务。
 * 确保你的定时任务类上有 @Component 或其他 Spring 管理的注解，使其成为 Spring 管理的 Bean。
 */
@Configuration
//@EnableScheduling：这个注解会启用 Spring 的调度功能，允许使用 @Scheduled 注解来定义定时任务。
@EnableScheduling
public class SchedulerConfig {

    @Bean
    //这是一个线程池任务调度器，用于执行计划任务（比如使用 @Scheduled 注解的方法）。配置了线程池大小和线程名称前缀。
    public ThreadPoolTaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
        taskScheduler.setPoolSize(5); // 设置线程池大小
        taskScheduler.setThreadNamePrefix("taskExecutor-");
        taskScheduler.setWaitForTasksToCompleteOnShutdown(true);  // 调度器shutdown被调用时等待当前被调度的任务完成

        return taskScheduler;
    }
}
